﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Collections;
using Portal.Web.Model;
using Portal.Web.Utility;
using Portal.Utility;
using Portal.Cms.Model;
using Portal.Cms.Bussiness;
using Portal.Core;

namespace Portal.Cms.Render
{
    public class StatiticsDocumentViewRenderBll
    {
        public static AjaxOut Draw(string SiteId, RenderInfoCls ORenderInfo)
        {
            AjaxOut OAjaxOut = new AjaxOut();
            try
            {
                WebSessionUtility.CheckSessionTimeOut();
                //if (WebSessionUtility.GetCurrentLoginUser().IsSystemAdmin==false)
                //{
                //    throw new Exception("Không có quyền truy cập chức năng quản trị. Để vào chức năng này xin vui lòng đăng nhập bằng tài khoản admin");
                //}

                bool per = SystemBussinessUtility.CreateSystemsBussinessProcess(SiteId).CheckPermission(SiteId, GroupDataPermission.StaticId, GroupDataPermission.funcStatitics, "8c604984-e627-4f2b-80f7-26f94a39a4c5", WebSessionUtility.GetCurrentLoginUser().UserId, true);

                if (!per)
                {
                    throw new Exception("Không có quyền truy cập chức năng quản trị. Để vào chức năng này xin vui lòng đăng nhập bằng tài khoản admin");
                }

                SiteParam OSiteParam = WebEnvironments.CreateSiteParam(SiteId);
                string ButtonUrl = WebConfig.GetButtonIconRoot(OSiteParam);
                string SelectType =
                    "<select id=drpSelectType class=drpSelect>\r\n" +
                    "   <option value=\"view\">Theo lượt xem</option>\r\n"+
                    "   <option value=\"download\">Theo lượt tải</option>\r\n" +
                    "</select>\r\n";

                string BackUrl = (string)WebEnvironments.Request(SiteId, "BackUrl");
                if (string.IsNullOrEmpty(BackUrl))
                {
                    BackUrl = ORenderInfo.BackUrl;
                    if (string.IsNullOrEmpty(BackUrl))
                    {
                        BackUrl = "folder.aspx";
                    }
                }
                else
                {
                    BackUrl = "../../folder.aspx?folder="+BackUrl;
                }
                string Html =
                   "<script language=javascript>\r\n" +
                   "    function NextPage(PageIndex)\r\n"+
                   "    {\r\n"+
                   "        SiteId='"+SiteId+"';\r\n"+
                   "        ViewType=document.getElementById('drpSelectType').value;\r\n" +
                   "        MaxDoc=document.getElementById('txtMaxDoc').value;\r\n" +
                   "        AjaxOut = Portal.Cms.Render.StatiticsDocumentViewRenderBll.ServerSideReading(SiteId, ViewType, MaxDoc, PageIndex).value;\r\n" +
                   "        document.getElementById('divListViewDetail').innerHTML=AjaxOut.HtmlContent;\r\n" +
                   "    }\r\n"+

                   "</script>\r\n" +
                   "<input id=txtCheckedIds type=hidden value=\"\">\r\n" +
                   //"<div id=divActionForm class=CssFormSaveUpdate></div>\r\n" +
                   "<div class=FormFunction id=divListForm>\r\n" +
                   " <div class=DatabaseFunction>\r\n" +
                   "        <ul>\r\n" +
                   "            <li onclick=\"javascript:NextPage(0);\"><img class=image src=\""+ButtonUrl+"/Refresh.png\"><div>Đọc lại</div></li>\r\n" +
                   "            <li onclick=\"javascript:window.open('"+BackUrl+"','_self');\"><img class=image src=\""+ButtonUrl+"/back.png\"><div>Quay lại</div></li>\r\n" +
                   "        </ul>\r\n" +
                   "  </div>\r\n" +
                   "  <h3>Thống kê xem, lượt tải văn bản nhiều nhất</h3>\r\n" +
                   "  <div class=CssFilter>Loại " + SelectType + " - Số văn bản tối đa: <input id=txtMaxDoc value=\"100\"><input type=button class=button value=\"Lọc dữ liệu\" onclick=\"javascript:NextPage(0);\"></div>\r\n" +
                   "  <div id=divListViewDetail class=tabcontent>"+ServerSideReading(SiteId,"view","100",0).HtmlContent+"</div>\r\n"+
                   "</div>\r\n";
                   
                OAjaxOut.HtmlContent = Html;
            }
            catch (Exception ex)
            {
                OAjaxOut.Error = true;
                OAjaxOut.InfoMessage = ex.Message.ToString();
                OAjaxOut.HtmlContent = "<div class=CssAccessDenied>"+ ex.Message.ToString()+"</div>\r\n";
            }
            
            return OAjaxOut;
        }

        [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
        public static AjaxOut ServerSideReading(
            string SiteId,
            string ViewType,
            string MaxDoc,
            int    PageIndex)
        {
            AjaxOut OAjaxOut = new AjaxOut();
            try
            {
                if (FunctionUtilities.checkInteger(MaxDoc) == false)
                {
                    throw new Exception("Số văn bản không hợp lệ!");
                }
                CmsDataCls[] CmsDatas = DocStatiticsProcessBll.ReadingViewDownloadStatitics(SiteId, ViewType,int.Parse(MaxDoc));
                if (CmsDatas.Length == 0)
                {
                    OAjaxOut.HtmlContent = "<div class=CssNoData>Không có dữ liệu thống kê</div>\r\n";
                    return OAjaxOut;
                }

                ReturnPaging OReturnPaging =
                   WebPaging.GetPaging(CmsDatas.Length, PageIndex, 20, 10, "NextPage");
                if (CmsDatas.Length == 0)
                {
                    OAjaxOut.HtmlContent += "<div class=CssNoData>Không có văn bản nào</div>\r\n";
                    return OAjaxOut;
                }
                string Html =
                    OReturnPaging.PagingText +
                    "<table>\r\n" +
                    "   <tr>\r\n" +
                    "       <th class=thIndex>#</th>\r\n" +
                    "       <th style=\"width:80px;text-align:right;\">Tổng số</th>\r\n" +
                    "       <th>Số / Tiêu đề</th>\r\n" +
                    "       <th>Thông tin</th>\r\n" +
                    "       <th style=\"width:80px\">Ngày ban hành</th>\r\n" +
                    "       <th style=\"width:80px\">Ngày hiệu lực</th>\r\n" +
                    "   </tr>\r\n";
                for (int iIndex = 0; iIndex < CmsDatas.Length; iIndex++)
                {
                    Html +=
                        "<tr>\r\n" +
                        "   <td>" + (iIndex + 1) + "</td>\r\n";
                    if (ViewType.Equals("view"))
                    {
                        Html +=
                            "   <td style=\"text-align:right;padding-right:4px;\">" + CmsDatas[iIndex].TotalPreview + "</td>\r\n";
                    }
                    else
                    {
                        Html +=
                            "   <td style=\"text-align:right;padding-right:4px;\">" + CmsDatas[iIndex].TotalDownload + "</td>\r\n";
                    }
                    Html+=
                        "   <td><a href=\"PreviewCmsDocumentData.aspx?gid=" + CmsDatas[iIndex].frkGroupDataId + "&CmsDataId=" + CmsDatas[iIndex].DataId + "&Back=StatiticsReleaseDocument.aspx\">" + CmsDatas[iIndex].DataAlias + "</a><br>" + CmsDatas[iIndex].Subject + "</td>\r\n" +
                        "   <td>Loại: "+CmsDatas[iIndex].DocTypeName+"<br>Lĩnh vực: "+CmsDatas[iIndex].DocFieldName+"<br>Người ký:"+CmsDatas[iIndex].DocSignerName+"<br>Cơ quan ban hành:"+CmsDatas[iIndex].DocReleaseFromName+"</td>\r\n" +
                        "   <td>" + CmsDatas[iIndex].ReleaseDate + "</td>\r\n" +
                        "   <td>" + CmsDatas[iIndex].EffectedDate + "</td>\r\n"+
                        "</tr>\r\n";

                }
                Html += "</table>\r\n";
                OAjaxOut.HtmlContent = Html;
            }
            catch (Exception ex)
            {
                OAjaxOut.Error = true;
                OAjaxOut.InfoMessage = ex.Message.ToString();
                OAjaxOut.HtmlContent = ex.Message.ToString();
            }

            return OAjaxOut;
        }


    }
}
